/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Aleatorio.Distribuciones;

/**
 *
 * @author Driv
 */
public class GeneradorPoisson implements GeneradorAleatorio{
    
    private GeneradorUniforme generador;
    private double exp;
    
    public GeneradorPoisson(int semilla){
        generador = new GeneradorUniforme(semilla);
        exp = 1/(Math.E);
    }
    
    public GeneradorPoisson(int semilla, double lambda){
        generador = new GeneradorUniforme(semilla);
        this.exp = Math.pow(Math.E, -lambda);
    }

    public void setSemilla(int semilla) {
        generador.setSemilla(semilla);
    }

    public double siguiente() {
        double acumulador = 1;
        int x = -1;
        do{
            acumulador = acumulador * generador.siguiente();
            x++;
        }while (acumulador >= exp);
        return x;
    }

}
